{% macro menu_icon(item) -%}
    {% set icon_type = item.get_icon_type() %}
    {%- if icon_type %}
        {% set icon_value = item.get_icon_value() %}
        {% if icon_type == 'glyph' %}
            <i class="glyphicon {{ icon_value }}"></i>
        {% elif icon_type == 'fa' %}
            <i class="fa {{ icon_value }}"></i>
        {% elif icon_type == 'image' %}
            <img src="{{ url_for('static', filename=icon_value) }}" alt="menu image">
        {% elif icon_type == 'image-url' %}
            <img src="{{ icon_value }}" alt="menu image">
        {% endif %}
    {% else %}
        {%- if item.name == "Home" %}
            <i class="fa fa-home"></i>
        {% else %}
            <i class="fa fa-circle-o"></i>
        {% endif %}
    {% endif %}
{%- endmacro %}

{% macro menu(menu_root=None) %}
    {% if menu_root is none %}{% set menu_root = admin_view.admin.menu() %}{% endif %}
    {%- for item in menu_root %}
        {%- if item.is_category() -%}
            {% set children = item.get_children() %}
            {%- if children %}
                {% set class_name = item.get_class_name() %}
                {%- if item.is_active(admin_view) %}
                    <li class="active treeview">
                        {% else -%}
                    <li class="treeview">
                {%- endif %}
            <a href="#">
                {{ menu_icon(item) }}
                <span>{{ item.name }}</span>
                <span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span>
            </a>
            <ul class="treeview-menu">
                {%- for child in children -%}
                    {% set class_name = child.get_class_name() %}
                    {%- if child.is_active(admin_view) %}
                        <li class="active{% if class_name %} {{ class_name }}{% endif %}">
                            {% else %}
                        <li{% if class_name %} class="{{ class_name }}"{% endif %}>
                    {%- endif %}
                <a href="{{ child.get_url() }}"{% if child.target %} target="{{ child.target }}"{% endif %}>
                    {{ menu_icon(child) }}<span>{{ child.name }}</span></a>
                </li>
                {%- endfor %}
            </ul>
            </li>
            {% endif %}
        {%- else %}
            {%- if item.is_accessible() and item.is_visible() -%}
                {% set class_name = item.get_class_name() %}
                {%- if item.is_active(admin_view) %}
                    <li class="active{% if class_name %} {{ class_name }}{% endif %}">
                        {%- else %}
                    <li{% if class_name %} class="{{ class_name }}"{% endif %}>
                {%- endif %}
            <a href="{{ item.get_url() }}"{% if item.target %} target="{{ item.target }}"{% endif %}>
                {{ menu_icon(item) }}<span>{{ item.name }}</span></a>
            </li>
            {%- endif -%}
        {% endif -%}
    {% endfor %}
{% endmacro %}

{% macro menu_links(links=None) %}
    {% if links is none %}{% set links = admin_view.admin.menu_links() %}{% endif %}
    {% for item in links %}
        {% if item.is_accessible() and item.is_visible() %}
            <li>
                <a href="{{ item.get_url() }}">{{ menu_icon(item) }}{{ item.name }}</a>
            </li>
        {% endif %}
    {% endfor %}
{% endmacro %}

{% macro messages() %}
    {% with messages = get_flashed_messages(with_categories=True) %}
        {% if messages %}
            {% for category, m in messages %}
                {% if category %}
                    {# alert-error changed to alert-danger in bootstrap 3, mapping is for backwards compatibility #}
                    {% set mapping = {'message': 'info', 'error': 'danger'} %}
                    <div class="alert alert-{{ mapping.get(category, category) }} alert-dismissable">
                {% else %}
                    <div class="alert alert-dismissable">
                {% endif %}
            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
            {{ m }}
            </div>
            {% endfor %}
        {% endif %}
    {% endwith %}
{% endmacro %}
